#pragma once

class State
{
public:
    enum Type {STATE, RUNNING, PENDING, NULL_STATE};

    State();
    virtual ~State();

    virtual void activate() = 0;
    virtual void idle() = 0;
    virtual void update(float dt) = 0;
    
    Type getQueuedState() { assert(queuedState != type); return queuedState; }
    Type getType() { return type; }
	Type queuedState;
protected:
    Type type;
};

